import random

import numpy as np

a=np.array([10,20,30,40])
b=np.arange(4)
print(a,b)
c=a+b
print(c)         #对应加减
c=a**b           #也可以对应乘除幂次运算
print(c)
c=np.sin(a)      #可以求对应的sin cos tan值
print(c)
print(a<20)      #print了a里面哪些值小于20   其他比较运算同理

#------------------矩阵运算--------------------#
a=np.array([[1,1],[2,2]])
b=np.arange(4).reshape((2,2))
print(a)
print(b)
print(a*b,'++++++++++++++++')
c_dot=np.dot(a,b)       #dot运算的是矩阵的运算
print(c_dot)
print('2---------------------------------------------')

a=np.random.random((2,4))
print(a)
print(np.sum(a,axis=1))   #axis=1得到一行的结果
print(np.sum(a,axis=0))   #axis=0得到一列的结果
print(np.max(a),'max1')
print(np.max(a,axis=1),'max2')       #求出每行的最大值
print(np.min(a,axis=0),'min')        #每列的最大值

print('3----------------------------------------------')
a=np.array([random.randint(0,12) for i in range(12)]).reshape((3,4))
print(a)
print(np.argmin(a))        #索引最小值的位置
print(np.argmax(a))        #索引最大值的位置
print(np.mean(a),'平均数')          #求平均值                这里也可以用axis  很多地方都能用
print(a.mean(),'平均数')
print(np.median(a),'中位数')#求中位数
print(np.cumsum(a))         #对数组求前n项和
print(np.diff(a))           #每一行后一个数减去前一个数的值组成的二维数组       例子设的是3*4的数组，结果是3*3的数组
print("这个是a",a)
print(np.nonzero(a))        #输出了两个数组  第一个数组a是行，第二个b是列   结果就是（a1，b1）不为0
print(np.sort(a))           #逐行排序   每一行进行从小到大排序
print((np.transpose(a)))    #！！！！矩阵的转置！！！！
print((a.T))                #也是转置的另一种写法
print((a.T).dot(a),'矩阵的转置*矩阵')   #矩阵的转置*矩阵
print(np.clip(a,5,9))        #clip()  对小于5就变成5，大于9的变成9 ，其他的不变